C6 state with EOI issue fix for some Intel processors
authorKeir Fraser <keir.fraser@citrix.com>
Wed, 15 Sep 2010 08:00:35 +0000 (09:00 +0100)
committerKeir Fraser <keir.fraser@citrix.com>
Wed, 15 Sep 2010 08:00:35 +0000 (09:00 +0100)
commit95807bcae47efaf96888119b2a0b4b921ad737df
tree71d9b3d07ad7e74d20e5cefcaf098e2371f7b76f
parentc87dafbd403f8d44dad5f9eccedc64033596bdbf
C6 state with EOI issue fix for some Intel processors

There is an errata in some of Intel processors.

AAJ72. EOI Transaction May Not be Sent if Software Enters Core C6
During an Interrupt Service Routine

If core C6 is entered after the start of an interrupt service routine
but before a write to the APIC EOI register, the core may not send an
EOI transaction (if needed) and further interrupts from the same
priority level or lower may be blocked.

This patch fix this issue, by checking if ISR is pending before enter
deep Cx state. If so, it would use power->safe_state instead of deep
Cx state to prevent the above issue happen.

Signed-off-by: Sheng Yang <sheng@linux.intel.com>
Signed-off-by: Keir Fraser <keir.fraser@citrix.com>
xen/arch/x86/acpi/cpu_idle.c
xen/arch/x86/irq.c
xen/include/asm-x86/irq.h